package com.wang.zgkj.controller;

import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * 获取实时数据
 *
 * @author WangXinzhu
 * @date 2022/12/9 15:03
 * @since 1.0
 */
@RestController
@RequestMapping("/api/live/date")
public class LiveDataController {


    /**
     * 获取实时数据
     * <p>
     * 注：通过Http的方式获取实时数据 ，也可以使用 MQTT js客户端直接订阅设备对应的主题，或者 ws协议
     */
    @GetMapping
    public ResponseEntity<Object> getLiveData() throws InterruptedException {

        int count = 10;

        Object data;

        // 2000 毫秒时间内拿到数据就返回
        for (int i = 0; i < count; i++) {
            data = getData();
            Thread.sleep(200);
            if (data != null) {
                return ResponseEntity.ok(data);
            }
        }


        return ResponseEntity.ok("获取数据失败");
    }

    /**
     * 获取的数据必须是产生数据时间大于等于当前时间
     */
    private Object getData() {

        //数据可能存在数据库，缓存中间件，或者内存


        return null;

    }
}
